/*
 * 1.00 2012/09/20
 *
 * Copyright (c) 2012 Motch_bs
 * All rights reserved.
 *
 * このソフトウェアは，Motch_bsに所有される機密情報である。
 * これらの機密情報を漏洩してはならず，Motch_bs の意図する
 * 認可の元においてこれを使用すべし。
 */
package jp.co.ufp.sevendaystask.forms;

import jp.co.ufp.sevendaystask.R;
import jp.co.ufp.sevendaystask.constants.C;
import jp.co.ufp.sevendaystask.listners.QueryFormOnClickListener;
import jp.co.ufp.sevendaystask.logics.Logic001;
import jp.co.ufp.sevendaystask.storage.QueryManager;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * @author Motch_bs
 * 
 */
public class QueryForm extends Activity {

    /** 処理モード */
    public String mode;

    /** DBのID */
    public int iId = -1;

    /** 曜日 */
    public int position_week;

    /** カラー保持用 */
    public int taskColor = -1;

    /** 開始時刻 */
    public TextView eTimeStart;

    /** 終了時刻 */
    public TextView eTimeEnd;

    /** 仕事名 */
    public EditText eTaskTitle;

    /** 仕事内容 */
    public EditText eTaskMemo;

    /** 色 */
    public Button btnTaskColor;

    /** 一番外側のレイアウト */
    private LinearLayout queryFormLayout;

    /** データベースヘルパー */
    private QueryManager queryManager;

    /** ボタン登録時の処理 */
    private QueryFormOnClickListener addFormOnClickListener;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(
	Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	getWindow().requestFeature(Window.FEATURE_LEFT_ICON);// アイコン表示
	setContentView(R.layout.activity_query_form);
	getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.ic_launcher);
	// DBのインスタンス生成
	queryManager = new QueryManager(this);
	// インテント取得
	Intent intent = getIntent();
	mode = intent.getStringExtra(C.MODE);
	iId = intent.getIntExtra(C.TASKID, -1);
	position_week = intent.getIntExtra(C.POSITION_WEEK, -1);
	taskColor = intent.getIntExtra(C.TASK_COLOR, R.color.azure);
	// -----------------------------------------------------
	// 一番外側のレイアウト
	queryFormLayout = (LinearLayout) findViewById(R.id.queryFormLayout);
	// -----------------------------------------------------
	// 開始時刻のテキスト
	String sStart = Logic001.formatTime(intent.getStringExtra(C.TIME_START));
	eTimeStart = (TextView) findViewById(R.id.timeStart);
	eTimeStart.setText(sStart);
	// -----------------------------------------------------
	// 終了時刻のテキスト
	String sEnd = Logic001.formatTime(intent.getStringExtra(C.TIME_END));
	eTimeEnd = (TextView) findViewById(R.id.timeEnd);
	eTimeEnd.setText(sEnd);
	// -----------------------------------------------------
	// タイトルのEditView
	eTaskTitle = (EditText) findViewById(R.id.taskTitle);
	eTaskTitle.setText(intent.getStringExtra(C.TASK_TITLE));
	// -----------------------------------------------------
	// メモのEditView
	eTaskMemo = (EditText) findViewById(R.id.taskMemo);
	eTaskMemo.setText(intent.getStringExtra(C.TASK_MEMO));
	// -----------------------------------------------------
	// 色選択
	btnTaskColor = (Button) findViewById(R.id.taskColor);
	queryFormLayout.setBackgroundColor(taskColor);
	btnTaskColor.setOnClickListener(new OnClickListener() {
	    @Override
	    public void onClick(
		View v) {
		showDialog(C.COLOR_DIALOG_PALLET);
	    }
	});
	// タイトル表示
	setTitle(Logic001.getWeekDayString(this, position_week));
	Button btnQuery = (Button) findViewById(R.id.btnQuery);
	Button btnDelete = (Button) findViewById(R.id.btnDelete);
	Button btnPickerStart = (Button) findViewById(R.id.btnPickerStart);
	Button btnPickerEnd = (Button) findViewById(R.id.btnPickerEnd);
	// リスナーの登録
	addFormOnClickListener = new QueryFormOnClickListener(this, queryManager);
	btnQuery.setOnClickListener(addFormOnClickListener);
	btnDelete.setOnClickListener(addFormOnClickListener);
	btnPickerStart.setOnClickListener(addFormOnClickListener);
	btnPickerEnd.setOnClickListener(addFormOnClickListener);
	// 登録時はボタン名を「Add(追加)」に変える
	if (mode.equals(C.MODE_INSERT)) {
	    btnQuery.setText(R.string.btnInsert);
	}
	// 上記以外はすべて「Update(更新)」に変える。
	else {
	    btnQuery.setText(R.string.btnUpdate);
	}
    }

    @Override
    protected void onResume() {
	super.onResume();
    }

    /**
     * @param id
     */
    @Override
    protected Dialog onCreateDialog(
	int id) {
	if (id == C.COLOR_DIALOG_PALLET) {
	    LayoutInflater inflater = LayoutInflater.from(this);
	    final View palletDialog = inflater.inflate(R.layout.dialog_selecter, null);
	    final GridView gridView = (GridView) palletDialog.findViewById(R.id.colorSelectGridView);
	    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1) {
		@Override
		public View getView(
		    int position, View convertView, ViewGroup parent) {
		    View view = super.getView(position, convertView, parent);
		    view.setBackgroundColor(C.COLOR_PALLET_TABLE[position]);
		    return view;
		}
	    };
	    for (int i = 0; i < C.COLOR_PALLET_TABLE.length; i++) {
		adapter.add("");
	    }
	    gridView.setAdapter(adapter);
	    gridView.setOnItemClickListener(new OnItemClickListener() {
		@Override
		public void onItemClick(
		    AdapterView<?> arg0, View arg1, int arg2,
		    long arg3) {
		    taskColor = C.COLOR_PALLET_TABLE[arg2];
		    // btnTaskColor.setBackgroundColor(taskColor);
		    queryFormLayout.setBackgroundColor(taskColor);
		    dismissDialog(C.COLOR_DIALOG_PALLET);
		}
	    });

	    return new AlertDialog.Builder(this)
		    .setView(palletDialog)
		    .setNegativeButton("Cancel", null)
		    .create();
	}
	return super.onCreateDialog(id);
    }
}
